Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

Porta parallela
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Una mwcqporta parallela (detta anche mwcgLPT, dall'mwcwinglese mwdaLine Printer, termine derivato da mwdqLine Printer Terminal),cite-ref-1[1] in mwegelettronica e nell'mwewinformatica, è un'mwfainterfaccia usata inizialmente per collegare un mwfqcomputer a una mwfgstampante o a un mwfwplotter e in seguito, nella versione bidirezionale, impiegata anche per altre mwgaperiferiche tra le quali mwgqscanner, mwggunità ZIP, mwgwhard disk, lettori di mwhaCD-ROM e mwhqwebcamcite-ref-2[2]. La porta infatti è nata come mwigunidirezionale (trasmissione dati dal mwiwcomputer alla periferica collegata) e solo in seguito è stato sviluppato anche uno mwjastandard mwjqbidirezionale (mwjgIEEE 1284).

La porta parallela è ormai considerata obsoleta: vengono utilizzati altri standard di comunicazione come l'mwkaUSB (mwkqseriale e quindi di minore ingombro, più veloce e multifunzione).

Contents

Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Introduzione

La LPT consente il collegamento di diverse periferiche con possibilità di trasferire 8 mwlqbit in parallelo nello standard mwlgTTL. Sul computer la porta è un connettore femmina detto "a vaschetta" o mwlwDB25 con 25 mwmapin.

Sulle stampanti è presente un connettore diverso detto Centronics (dal nome del primo costruttore). La presenza di 8 fili di GND permette di creare una sufficiente schermatura (mwmgcavi intrecciati a coppie) dei segnali.

Le porte parallele sui personal computer IBM

Indirizzi delle porte parallele

Nei computer IBM gli indirizzi riservati alle prime tre porte parallele (anche se nella maggior parte dei casi è presente un'unica porta) sono i seguenti:

| Nome della porta | Interrupt request | Indirizzo iniziale di I/O | Indirizzo finale di I/O |
|---|---|---|---|
| LPT1 | IRQ 7 | 0x378 | 0x37f |
| LPT2 | IRQ 5 | 0x278 | 0x27f |
| LPT3 | IRQ 7 | 0x3bc | 0x3bf |

Per le porte eccedenti Linux lpt_driver sono consigliati gli indirizzi:

| Nome della porta | Interrupt request | Indirizzo iniziale di I/O | Indirizzo finale di I/O |
|---|---|---|---|
| LPT4 | IRQ ? | 0x27C | 0x27F |
| LPT5 | IRQ ? | 0x26C | 0x26F |
| LPT6 | IRQ ? | 0x268 | 0x26B |

Registri delle porte parallele

Relazione tra pin dei connettori e bit dei registri per le porte parallele:

| Indirizzo | | Bit più significativo | | | | | | | Bit meno significativo |
|---|---|---|---|---|---|---|---|---|---|
| | Bit: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| Base ( Data port ) | Pin: | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
| Base+1 ( Status port ) | Pin: | ~11 | 10 | 12 | 13 | 15 | | | |
| Base+2 ( Control port ) | Pin: | | | | | ~17 | 16 | ~14 | ~1 |

Il simbolo ~ indica che il livello logico tra il pin della porta e il bit del registro viene invertito dall'mwtwhardware.

Ogni porta LPT dispone di almeno tre diversi registri:

• mwuwData port: contiene il mwvabyte che deve essere trasmesso o che è stato ricevuto (ad esempio per LPT1: Base = mwvq0x378)
• mwvwStatus port: contiene informazioni relative allo stato della porta. Il registro è a sola lettura (LPT1: Base+1 = mwwa0x379)
• mwwgControl port: registro di controllo della porta parallela. Questo registro è a sola scrittura (LPT1: Base+2 = mwww0x37a)

Piedinatura delle porte parallele

La tabella 1 riassume la mwxgpiedinatura e le funzioni dei vari segnali sul connettore (o sui connettori) della porta parallela del computer e su quello della stampante.

| Numero pin (DB25) | Numero pin (Centronics) | Nome del segnale | Direzione | Registro-bit | Segnale invertito dall'hardware |
|---|---|---|---|---|---|
| 1 | 1 | nStrobe | Out | Control-0 | Si |
| 2 | 2 | Data0 | In/Out | Data-0 | |
| 3 | 3 | Data1 | In/Out | Data-1 | |
| 4 | 4 | Data2 | In/Out | Data-2 | |
| 5 | 5 | Data3 | In/Out | Data-3 | |
| 6 | 6 | Data4 | In/Out | Data-4 | |
| 7 | 7 | Data5 | In/Out | Data-5 | |
| 8 | 8 | Data6 | In/Out | Data-6 | |
| 9 | 9 | Data7 | In/Out | Data-7 | |
| 10 | 10 | nAck | In | Status-6 | |
| 11 | 11 | Busy | In | Status-7 | Si |
| 12 | 12 | Paper-Out | In | Status-5 | |
| 13 | 13 | Select | In | Status-4 | |
| 14 | 14 | nAuto/Linefeed | Out | Control-1 | Si |
| 15 | 32 | nError/nFault | In | Status-3 | |
| 16 | 31 | nInitialize | Out | Control-2 | |
| 17 | 36 | nSelect-Printer/nSelect-In | Out | Control-3 | Si |
| 18-25 | 19-30 | Ground | Gnd | - | - |

• La "mwawkn" che precede il nome del segnale indica che è attivo basso. Ad esempio mwawonError: se la stampante segnala un errore il segnale diventa basso (la tensione è tra 0 e 0,7 mwawsvolt circa e il bit 3 dello mwawwStatus Port verrà letto come 0 dal mwaw0software) mentre se la stampante funziona correttamente il segnale è alto (la tensione è compresa tra 2,2 e 5 volt e il bit 3 dello mwaw4Status Port verrà letto come 1 dal software).
• La colonna "Segnale invertito dall'hardware": se ad esempio il segnale mwaxaBusy va a livello logico 1 il bit 7 (il bit più significativo dello mwaxeStatus Port) verrà letto come 0 dal software.
• Il mwaxmbus dati (mwaxq D a t a 0 , . . . , D a t a 7 {\displaystyle Data0,...,Data7} ), in origine disponibile solo in modo uscita, è diventato bidirezionale per ampliare la gamma di periferiche collegabile (Standard IEEE 1284).
• Pin 1 è lo mwaxyStrobe, attivo basso, nel caso di una stampante, segnala che sul bus dati è presente un dato correttocite-ref-3[3].
• Pin 10, mwaxwAck, è un ingresso attivo basso; indica al PC che il dato presente sul bus è stato letto e che la stampante è pronta per ricevere altri dati; consente l'abilitazione della richiesta d'interrupt alla CPU (IRQ7 per LPT1 e LPT3; IRQ5 per LPT2).
• Pin 11, mwax4Busy, ingresso, attivo alto; indica che la stampante è occupata e non può ricevere altri dati, il segnale va alto durante le operazioni di trasferimento e ritorna basso appena la stampante è nuovamente disponibile per ricevere altri dati.
• Pin 12, mwayaPaper-Out, ingresso, attivo alto; indica al PC che la stampante è senza carta.
• Pin 13, mwayiSelect, ingresso, attivo alto; indica al PC che la stampante è collegata e pronta a funzionare.
• Pin 14, mwayqAuto/Linefeed, uscita, attivo bassa; indica alla stampante la modalità di avanzamento carta; quando è attivo l'avanzamento è generato da mwayu0x0d (mwayycarriage return), quando è alto l'avanzamento sarà operato dalla stampante solo in seguito alla ricezione del carattere mwayc0x0a (mwaygline feed o mwaykmwayonewline).
• Pin 15, mwaywError/Fault, ingresso, attivo basso, comunica al PC che qualcosa non va nella stampante.
• Pin 16, mway4Initialize, uscita, attivo basso, serve a interrompere un'eventuale stampa in corso svuotando il mway8buffer della stampante e a riportarla allo stato in cui si trovava dopo l'accensione.
• Pin 17, mwazeSelect-Printer, uscita, attivo basso, abilita la stampante a ricevere i dati.

Nelle Motherboard più recenti il connettore LPT è presente solo internamente su connettore 26P IDC la corrispondenza dei pin è per file, ovvero 1IDC-1LPT 2IDC-14LPT 3IDC-2LPT etc.

Protocollo di comunicazione Centronics

La trasmissione di un dato dal PC alla stampante deve rispettare il protocollo Centronics (o mwazoHandshake Centronics) che può essere riassunto nei seguenti passi:

1. Il computer controlla se la stampante è pronta verificando che nello mwaz0Status port: mwaz4Error = 1, mwaz8Select = 1, mwaaaPaper-Out = 0, mwaaeBusy = 0. Se queste condizioni non sono verificate segnala la condizione di errore o guasto; se invece i bit sono corretti va al passo successivo.
2. Il PC trasferisce un nuovo dato sui pin mwaamData0, ..., mwaaqData7.
3. Dopo un tempo di almeno 0,5 mwaayμs pone mwaacStrobe = 0 (impulso negativo di 1mwaag µs) per indicare che è pronto un nuovo dato.
4. La stampante risponde ponendo mwaaoBusy = 1 per comunicare che sta acquisendo il dato.
5. Terminata l'operazione di acquisizione pone Ack = 0 (impulso negativo di 8mwaaw µs) per comunicare l'avvenuta acquisizione del dato e appena è pronta per ricevere un nuovo dato rimette mwaa0Busy = 0.
6. Il computer ripete la sequenza dal punto 1 fino al completamento delle operazioni di trasferimento dei dati.

Va evidenziato che:

• il trasferimento dei dati richiede molto meno tempo della loro effettiva stampa.
• se la stampante ha riempito il suo buffer manterrà attivo il mwabmBusy (= 1) fino a quando non avrà liberato lo spazio per ricevere altri dati.

Altri usi della porta parallela

Protezione hardware per il software

Per impedire la copia cosiddetta "pirata" di software viene usato un dispositivo da collegare alla porta parallela chiamato in vari modi: chiave hardware, "mwabcdongle", "mwabghardware token". Il software interagisce con la chiave hardware e, nel caso non la trovi collegata, impedisce all'utente di usare il programma. Il dispositivo non interferisce (o non dovrebbe interferire) con altri usi della porta in quanto "replica" il connettore femmina per collegare altre periferiche e risultare quindi trasparente per i normali utilizzi della porta. È da tempo sostituito con versioni per USB.

Acquisizione di dati

Anche quando la porta parallela era disponibile solo in forma unidirezionale (uscita) si erano realizzati sistemi per usarla per acquisire dati. Non si poteva ovviamente usare i bus dati (mwabs D a t a 0 , . . . , D a t a 7 {\displaystyle Data0,...,Data7} ), ma si usavano i pin disponibili come ingressi e l'artificio era noto come "mwabwmwab0Nibble mode" in quanto si acquisivano in sequenza temporale quattro bit alla volta.

Interfaccia di controllo di dispositivi

L'interfaccia parallela è in grado di acquisire e di produrre segnali elettrici di controllo, è quindi utilizzabile per usi particolari come comandare mwacarelè, circuiti di controllo, programmare memorie, ecc.

Schema di realizzazione per comando esterno d'uso generale

• Lo schema riportato può essere implementato su tutti i pin dati della porta per controllare quindi fino a otto dispositivi.
• Il transistor utilizzato Q1 è un BC548B ma l'uso di un mwacktransistor Darlington (ad esempio BC517 o bdx53c) permetterebbe di avere più flessibilità nella scelta di mwacorelè eventualmente più potenti.
• D1 è un mwacwdiodo del tipo mwac01N4148 sufficiente se la corrente massima del relè non supera i mwac4150 mA.
• Il riquadro con L1 e J1 è l'insieme di un relè a 12 mwadaVcc ma se necessario si può usare anche un relè a 24 Vcc (tensione che va fornita da un alimentatore non rappresentato nello schema)
• Il resistore R2 è solo indicativo di un generico carico in mwadicorrente continua o mwadmalternata (non è rappresentata la sua alimentazione che dovrebbe essere in serie al carico)
• Il circuito rappresentato nello schema elettrico è puramente indicativo: eventuali protezioni (per esempio con l'uso dell'integrato 74ls244/74ls245 o di un buffer) e rispetto di normative di sicurezza non sono indicate.

Qualche nota esplicativa sullo schema

La porta parallela non inverte i segnali: quando nel registro dati si scrive 7 la porta assume il valore mwadcbinario mwadg00000111 e quindi si attivano i tre relè eventualmente collegati ai pin mwadkData0, mwadoData1 e mwadsData2, mentre gli altri restano spenti.

Per questo motivo è stato usato il mwad0transistore Q1 in configurazione non invertente a mwad4emettitore comune.

Quando il pin della porta va alto sulla base del transistore il resistore R1 da 4,7 mwaeakmwaeeΩ limita la corrente sulla base a circa mwaei1 mA e contemporaneamente non sovraccarica la porta. Questa corrente porta il transistor in mwaemsaturazione e quindi attiva il relè (che però deve assorbire una corrente massima di mwaeq20 mA). Quando invece va a zero volt il transistor va in interdizione e il relè stacca il carico.

Il diodo ai capi del relè con il catodo verso +12 Vcc serve a scaricare la mwaeycorrente di autoinduzione che viene a crearsi quando il transistor Q1, da mwaecsaturo (acceso), va in interdizione (spento), in modo che non si creino sovratensioni che potrebbero danneggiarlo.

Programmazione

Il seguente programma in mwaeoC++ per mwaesGNU/mwaewLinux è un esempio di base per l'utilizzo della porta parallela:

#include <iostream>
#include <cstdio>
#define LPT 0x378
using namespace std;
int main()
{
/* nel caso di funzionamento in modalità 386 (GNU/Linux) si rende necessario il comando */
iopl(3);
/* l'impostazione dell'i/o permission level nel processore per indicare che le operazioni di i/o sono fisiche e non virtuali */
int numero_out=0;
outb(LPT,0);
cin>>numero_out;
outb(LPT,numero_out);
getchar();
outb(LPT,0);
return 0;
}

La riga 00 definisce che ad mwakgLPT viene assegnato l'indirizzo mwakkesadecimale della porta parallela, mwako0x378. Nella 03 definiamo una variabile mwaksmwakwint (mwak0intero), in questo caso mwak4numero_out a cui, nella riga 05, verrà assegnato un valore immesso da tastiera.

Nella 04 viene richiamata una funzione, mwalamwaleoutbmwali(mwalmex_portmwalq,mwaluint_outmwaly), che è già definita nella libreria standard mwalcmwalgstdiomwalk.mwaloh, in questo caso serve ad azzerare i valori "parassiti" presenti nella porta nel caso ce ne siano.

La riga 06 manda in output sulla porta il numero che noi abbiamo scelto, ma attenzione i bit disponibili sono 8 quindi il numero più alto possibile è 255, (es. se si scrive il numero decimale 159 in uscita come numero binario si ottiene mwalw10011111, per 52 si ha mwal000110100 e così via). Per finire nella 08 viene resettata la porta a 0 dopo aver premuto invio come richiesto in riga 07.

Note

cite-note-11. citerefdictionary-com(mwamqmwamuEN) mwamymwamcLPT - Definitions from Dictionary.com, su mwamgdictionary.reference.com. mwamkURL consultato il 09-12-2007.
cite-note-22. Creative CTWC e CTWCII (WebCam con connessione parallela)
cite-note-33. Il segnale viene attivato con un ritardo rispetto al bus dati in modo da permettere alle linee dati di stabilizzarsi.

Voci correlate
Altri progetti

Altri progetti

• Wikimedia Commons

• Wikimedia Commons contiene immagini o altri file sulla porta parallela

Collegamenti esterni

• citerefopen-library(EN) Opere riguardanti Portes parallèles, su Open Library, Internet Archive.
• citereffoldoc(EN) Denis Howe, parallel port, in Free On-line Dictionary of Computing. Disponibile con licenza mwan4GFDL
• mwaoa(EN) Video "tutorial" sulla porta parallela, su lcdinterfacing.googlepages.com. URL consultato l'8 agosto 2008 (archiviato dall'url originale il 24 febbraio 2009).
• mwaoi(EN) La porta parallela in modo ingresso, su fapo.com. URL consultato l'8 agosto 2008 (archiviato dall'url originale il 1º agosto 2008).
• mwaoq(EN) Acquisizione dati in "modo nibble", su fapo.com. URL consultato l'8 agosto 2008 (archiviato dall'url originale il 28 agosto 2008).
• mwaoy(EN) La porta parallela su www.beyondlogic.org, su beyondlogic.org. URL consultato l'8 agosto 2008 (archiviato dall'url originale il 20 aprile 2009).
• mwaog(EN) Osservazioni sulla corrente disponibile sui pin della porta parallela, su luberth.com. URL consultato l'8 agosto 2008 (archiviato dall'url originale il 6 agosto 2008).
• mwaoo(EN) Altre informazioni sulla porta parallela, su fapo.com. URL consultato l'8 agosto 2008 (archiviato dall'url originale il 2 agosto 2008).
• mwaowLa porta parallela SPP, su vincenzov.net.
• mwao4La porta parallela EPP, su vincenzov.net.